Media processing devices can be configured to play back media files that contain audio and/or video content. Early implementations required a user to download an entire media file before playback could be initiated. The amount of time required to begin playback depended on the size of the media file and the speed at which the media file could be transferred. More recently, a remote media file that is to be played back can be progressively downloaded from a remote storage device. During progressive downloading, the portion of a media file downloaded to a local media processing device can be played while one or more remaining portions of the media file are being downloaded. For example, the website www.apple.com/trailers hosts movie trailers, the contents of which can be progressively downloaded to a local media processing device and viewed using the QuickTime media player distributed by Apple Computer, Cupertino, Calif. Nonetheless, through progressive downloading, the media file is downloaded sequentially. Alternatively, media can be streamed over a streaming media server and played back on a local media processing device. Streaming media over a network, however, requires the support of a streaming protocol.
FIG. 1A presents an example of the structure of a media file 10 that includes media content. The media file 10 can contain indexing information 15, video data 20, audio data 25, and chapter data 30 arranged in the sequence shown in FIG. 1A. Further, the indexing information 15 can include metadata related to the video data 20, the audio data 25, and the chapter data 30 that is required to play back the media file 10. A media processing device can pull the media file 10 over a network from a remote media server. Alternatively, the remote media server can push the media file 10 over the network to the media processing device.
At the media processing device, the media file 10 can be saved to a storage device. During a sequential download, with respect to the file structure shown in FIG. 1A, the indexing information 15 is received first, followed by the video data 20, the audio data 25, and then the chapter data 30. Thus, it is possible that playback of a particular chapter cannot begin at the media processing device until the chapter data 30 is available, even after the corresponding audio and video data has been received. FIG. 1B presents an example of an alternative structure of the media file 10 in which the indexing information 15 is organized at the end of the media file 10. As a result, it is possible that playback of the media file 10 cannot begin until all of the indexing information 15 has been received. FIG. 1C presents an additional example of an alternative structure of the media file 10 in which the indexing information 15 can appear at the beginning of the media file 10 and the media containers representing video data 20, audio data 25, and chapter data 30 can be interleaved. Alternatively, the indexing information 15 can appear at any location in the media file 10.
Hyper Text Transfer Protocol (HTTP) provides a set of conventions that can be used to transfer or convey information within the world wide web. HTTP is a request/response protocol between clients and servers. In HTTP version 1.0, requests are issued sequentially, with the next request being issued only after the response to the current request has been completely received. HTTP version 1.1, however, allows multiple requests to be issued simultaneously without waiting to receive responses to one or more outstanding requests. The ability to issue multiple, co-pending requests is referred to as pipelining. Additionally, HTTP version 1.1 also supports requests to access specific byte ranges, which permits non-sequential retrieval from a remote server of any part of a file that can be requested as a particular range of bytes. Further, a file can include a table or map describing its organization with respect to byte addresses, such as in a header.